import axios from 'axios';

// 可以根据需要导入一些提示组件库用于错误提示，这里以element-ui为例，若未使用可替换或移除相关代码
import { Message } from 'element-ui';

// 创建axios实例
const instance = axios.create({
    baseURL: process.env.VUE_APP_DOMAIN, // 这里可以根据项目实际情况配置基础接口地址，比如从环境变量获取
    //baseURL:'http://172.20.0.144:8680',
    timeout: 5000, // 请求超时时间，单位是毫秒
});

// 请求拦截器
instance.interceptors.request.use(
    config => {
        // 例如，在这里添加token到请求头中（假设token存储在本地存储中，需根据实际情况调整获取方式）
        const token = localStorage.getItem('token');
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        // 可以在这里设置加载动画显示等其他操作
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);


// 响应拦截器
instance.interceptors.response.use(
    response => {
        // 先判断响应状态码，一般200系列表示成功，这里可根据实际后端接口规范调整判断逻辑
        const res = response.data;
        console.log(res);
        if (res.code === 200) {
            // 如果成功，直接返回数据部分（假设后端接口返回的数据结构中，真正有用的数据在某个字段下，这里简化处理了）
            Message.success(res.msg)
            return res.data;
        } else {
            // 如果接口返回错误码，根据项目需求进行提示等操作，比如弹出错误消息框（这里假设使用了某个UI组件库的提示功能，需根据实际调整）
            Message.error(res.msg || '请求失败');
            return Promise.reject(res);
        }
    },
    error => {
        // 处理网络错误等情况，比如请求超时、网络异常等
        Message.error('网络异常，请稍后再试');
        return Promise.reject(error);
    }
);

export default instance;